Rights-based advertisement management in protected media

ABSTRACT

A user playing a media file having ads on a playback device is able to automatically skip the ads during playback depending on the user&#39;s subscription level, as indicated in a user license or user account information. Whether an ad is automatically skipped may depend not only on the user license but also on attributes of the ad. An ad may have a skip-level which indicates the “importance” of the ad. If the advertiser wants to ensure that the ad will be seen and not be automatically skipped by a media playback unit, it can pay a higher price for the ad and the ad will be assigned a higher skip-level value. On the user subscription side, a user who wants to avoid ads may pay a higher subscription fee and have a user license that determines, via an auto-skip level value (“user level”), how many ads the user can automatically skip during playback of the media file. With a higher the auto-skip level value, the user is able to automatically skip more ads on the playback device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication No. 61/219,253, titled “RIGHTS-BASED ADVERTISEMENTMANAGEMENT IN PROTECTED MEDIA”, filed Jun. 22, 2009, which is herebyincorporated by reference in its entirety and for all purposes.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to media playback systems andsoftware. More specifically, the invention relates to a media playbackunit and techniques for managing the playback of ads or otherindividually identified segments in a media file using a user license.

2. Description of the Related Art

Presently, if a user wants to skip through advertisements, commercials,previews, and the like (called “ads” hereafter, but should be understoodto apply to any individually identifiable content segments) whilewatching a media file on a personal video recorder (PVR or DVR), such asa TV show or movie, they may be able to by physically pressing a buttonon a remote control to either fast forward through the ads (alsoreferred to as commercials) or skip through the ad, for example, byskipping through in 30 or 60 second intervals. In both cases, the useris inconvenienced because he or she is required to be proactive bymanually pressing a button and, while doing so, watch the screen toensure that the fast forwarding or skipping stops when the actual TVshow or movie begins. Additionally, the resulting uncertainty aboutwhether the user has watched an ad hurts the ability of the serviceprovider to correctly set the price of ad placement into the content.

Currently there are ways to identify the location of ads and to markindividual ads with one or more “usage constraints.” These include“No-Skip” which prevents the user or viewer from fast-forwarding throughads or from manually skipping ads. For example, the Marlin Specificationentitled Dynamic Media Zones (DMZ) describes such methods in an abstractand generic manner. The Marlin DMZ specification describes a mechanismfor having types of zones in a media presentation. This specificationdescribes attributes representing constraints that a media playerapplication must obey when playing back the content, such asadvertisement zones that must not be skipped, or a warning screen thatmust be viewed before the rest of the presentation can be viewed. TheDMZ specification is based on technology disclosed in IntertrustTechnologies, Inc.'s patent application Ser. No. 12/178,543. TheIntertrust patent application focuses on forced play of ads on a per-adrights basis (referred to as “No-Skip”). The absence of forced play onlyallows the user to manually fast-forward through ads, that is, where auser must press a button or perform some action to bypass the ad. Thereis no mention or method for software-controlled auto-skipping of ads.

SUMMARY OF THE INVENTION

In one aspect of the invention, a method of playing a media file, oftena protected media file, on a media playback device is described. A mediafile may contain content of a TV show, a movie, a sporting event, or anyform of digital content (e.g., an online video) that contains adcontent. A playback device may be any device that has adequate storagecapability and the ability (software and/or hardware) to playback themedia file. Typical playback devices may include PVRs (DVRs), a mobileplayback device (e.g., an MP3 player or camcorder), a smart handsetdevice, such as a cell phone, or a desktop, laptop, notebook, netbook,or tablet-style computer.

In one embodiment, a method of playing a media file having at least onead is described. An auto-skip level value (“user level”) may beretrieved from a user license associated with a media file (content),such as a DRM license. The user level may be examined, wherein a firstvalue of the user level value, such as 1, indicates not playing the adand a second value of the user level value, such as 0, indicates playingthe ad. The media file is played on the playback unit according to theuser level value, such that not playing the ad is accomplished withoutuser intervention. That is, the ad is skipped automatically without theuser having to take any proactive steps.

In one embodiment, the ad may be skipped after comparing a skip-levelvalue associated with the ad and the user level value and finding thatthe skip-level value is less than the user level value. In anotherembodiment, the ad may be played when the skip-level value is equal toor greater than the auto-skip value. In another embodiment, admanagement data is extracted from the media content file. In yet anotherembodiment, the media content file is in the MPEG-2 TS format and aprogram allocation table, a program map table, and an ad managementstream are utilized to obtain the skip-level value of each ad.

Another aspect of the present invention is an apparatus for playing amedia content file. As noted above, the apparatus may be a DVR, a PVR,an MP3 player, a computer, among other suitable playback devices capableof storing the media file. The apparatus has at least one processor anda network interface component for receiving data from external sourceseither via a wired or wireless connection. A data storage unit storesvarious types of data, including the media content file, ad managementdata (which may have been extracted from the media file), a userlicense, such as a DRM license, which may include a user level value.Applications stored in the storage unit may include an ad evaluationmodule which evaluates ads and user levels to determine when toautomatically skip an ad and a media content file playback module. Themedia content file and the ad management data may be received by theapparatus using the network interface component. The playback module andthe ad evaluation module execute on the processor, such that duringplayback of the media content file, ads are automatically skippeddepending on the user level value. In one embodiment, the ad managementdata includes a skip-level value and ads are skipped depending on theskip-level value and the user level value. In another embodiment, thedata storage unit stores a program allocation table and a program maptable.

BRIEF DESCRIPTION OF THE DRAWINGS

References are made to the accompanying drawings, which form a part ofthe description and in which are shown, by way of illustration,particular embodiments:

FIG. 1 is a block diagram of various data components stored in a mediaplayback unit that may be needed for implementing automatic ad skippingin accordance with one embodiment;

FIG. 2A is a block diagram of a specific format of a media file inaccordance with one embodiment;

FIG. 2B is a detailed illustration of various fields in a header of amedia file;

FIG. 3 is a flow diagram of a process for automatically skipping ads ina media file read from memory in a media unit in accordance with oneembodiment;

FIG. 4 is a block diagram showing the various streams and how admanagement information is multiplexed to create a single MPEG2-TS formatstream at a service provider location in accordance with one embodiment;

FIG. 5 is a block diagram showing how an ad management informationstream can be de-multiplexed from an MPEG-2 TS stream at a mediaplayback unit in accordance with one embodiment;

FIG. 6 is a flow diagram of a process of skipping an ad in a media filein accordance with one embodiment;

FIG. 7 is a block diagram showing greater detail of a user license inaccordance with one embodiment; and

FIGS. 8A and 8B are block diagrams of a media playback unit or similarcomputing system suitable for implementing various embodiments of thepresent invention.

DETAILED DESCRIPTION OF THE INVENTION

Methods and apparatus that enable automatic skipping of ads in which auser does not have to take any proactive steps during playback of amedia file are described in the various figures. It is becomingincreasingly common for consumers or users to download movies, TV shows,sporting events, and other media content from remote sources, includingcable TV companies, satellite TV providers, and online contentproviders. Users can now have all types of media content from variousproviders streamed or downloaded directly to their playback units. Inone scenario, a media file is transmitted over a cable TV line to amedia unit at the user's home, such as a personal or digital videorecorder (PVR or DVR), and is stored on a mass storage device, typicallya hard disk. For example, a user may schedule a recording of a sportingevent. When the scheduled time arrives, the event is streamed to the PVRand is recorded onto the hard disk for viewing later. Of course, thismay also be done with movies, TV shows, and the like; also, the contentmay be downloaded rather than streamed.

These media content often have ads before, after, and during the actualevent, TV show, or movie. The term “ad” used herein refers not only toconventional paid advertisements, but may also include public serviceannouncements, previews for other content, messages from third parties,and other distinguishable content segments in the media file. Theprimary content (or simply, content) in the media file is the contentthat the user is interested in watching (e.g., movie, TV show, sportingevent, online content, podcast, etc.) and the ad is a content segmentthat is distinguishable from the primary content. During playback of themedia file, the user sees the ads and in some case may be allowed tofast forward or skip through them by pressing a button on the remote, ifdesired. In another example, a media file storing a show and associatedads may be downloaded from a Web site onto a computer. During playbackof the file, the user will see the ads and may fast forward through themby clicking on the appropriate media control buttons displayed by theplayback software on the PC (e.g., Quicktime, Windows Media Player,iTunes, and the like). It is possible for the service provider (theentity that streams the media file to the user) to place usageconstraints on certain or all of the ads in the media file, such as notallowing the user to skip or fast forward through an ad. However, inmost cases, at least presently, if the user can skip/fast forwardthrough the ad, this must be done manually. The goal of the variousembodiments of the present invention is automatic skipping of all orsome ads during playback. This provides a superior user experience thanmanual ad skipping. Having the ad skipping done automatically by themedia unit software or hardware is a more enjoyable and convenient userexperience than having the user manually press buttons, for example, ona remote control each time an ad appears.

FIG. 1 is a block diagram of various data components stored in a mediaplayback unit that may be needed for implementing automatic ad skippingin accordance with one embodiment. A media playback unit 100 has a massstorage component 103, such as a hard disk or solid state memory, whichprovides persistent storage for a media file. The media file may havebeen transmitted to media unit 100 over a cable network, via satellite,over the Internet, from another storage device (e.g., DVD or CD), amongother sources (not shown). In the described embodiment, a media file102, having a particular format, is streamed to media unit 100 over acable TV network (not shown) and stored on storage component 103 inmedia unit 100 (e.g., a PVR). To illustrate features of the presentinvention, it is assumed that media file 102 may be any video thatcontains at least one ad. For illustration, media file 102 may bedescribed as having a portion that is “show” content, such as the actualTV show, movie, sporting event, etc., and “ad” content which will referto the portions of file 102 that is comprised only of ads. There may bead content before the show content begins, within the show content or atthe end of the show content. Ad content may be only one ad or mayconsist of multiple ads or ad “blocks” or zones (e.g., four 30-secondindividual ads comprising a two-minute ad block). Each block orindividual ad may be separated by show content. TV shows and movies thatare shown on TV networks often have ad blocks before, within, and afterthe show. FIG. 2A below shows media file 102 in greater detail.

Another data component in media playback unit 100 is ad management data104 which contains information on the ad content in media file 102. Itmay include ad numbers, locations, control restrictions, and datarelated to ad skipping. In one embodiment, ad management data 104 isextracted from media file 102, described below. In another embodiment,data 104 may be transmitted to media unit 100 in a separate file from aservice provider, for example, immediately before media file 102 istransmitted. In another embodiment, data 104 is not extracted, butrather is accessed from within media file 102 as needed, in which casebox 104 representing ad management data 104 is a logical or abstractrepresentation of the data. In one embodiment, media playback unit 100also has what may be referred to as an ad evaluation module 105 whichexamines values relating to user rights to have ads automaticallyskipped and, in other embodiments, values associated with an ad or spanof ads conveying whether the ad may be automatically skipped or if itmust be played.

Also shown is a user license 106 which typically resides on media unit100 before media file 102 is streamed and stored on storage component103. User license 106 may be a digital rights management (DRM) licensethat provides information on the user's rights and privileges withrespect to viewing one or more media files from a service provider. Oneembodiment of a DRM license is shown in FIG. 7. As is known in thefield, there are various types of DRMs (such as OMA DRM, Marlin, etc.),each DRM specifying a particular format for such licenses. Such licensesare in widespread use in Internet download services and may containvarious types of data such as the user's account number, subscriptionlevel (dictating the user's rights/constraints with respect to thecontent) and other data about the user. In one embodiment, it alsocontains an auto-skip level value which reflects the user's privilegeswith respect to viewing ads in media file 102. The user right may bechannel-based, subscription-based, or by individual program. Theseprivileges and how they are used are described in greater detail below.Finally, media playback unit 100 has software 108 and related hardware(shown in FIGS. 8A and 8B) for playback of media file 102. Program 108is modified to take into account user ad rights data and skip dataassociated with each ad in media file 102. Program 108 may be softwareon a PVR, a TV, a handheld media player, or a computer that executes ona processor (cpu) to enable playback or rendering of media file 102.There may also be a de-multiplexing module 110. Other components andmodules, such as processors and network interfaces, of media playbackunit 100 are shown in FIGS. 8A and 8B.

FIG. 2A is a block diagram of a specific format of media file 102 inaccordance with one embodiment. A video stream 200 of a media file(e.g., a TV show) begins with an encrypted header 202, followed by afirst portion of show content 204, referred to as video-1 204, followedby first ad content/block 206, comprised of ad-1 and ad-2, followed by asecond portion of show content, video-2 208, and then a single ad-3 210.Header 202 contains various data about the ads in video stream 200.

FIG. 2B is a detailed illustration of various fields in header 202. Inone embodiment, header 202 is arranged as a relational database table;however, other formats for storing header ad data may be used. An adnumber field 212 contains an ad number for each ad. In this case, thenumber of rows or entries in header 202 indicates the number ofindividual ads there are in video stream 200. For example, each ad maybe assigned a number starting with 1. A second field 214 may be astarting location of an ad and a third field 216 may be the endinglocation of the ad. Or there may be a field that contains the length ofthe ad instead of the ending location. These positions and lengths maybe measured in Access Units (AU) or in any other appropriate measurementunit depending on the format used for the file. In one embodiment,header 202 has a skip-level field 218 associated with the specific ad. Askip-level may be a value between 0 and n. This value may be describedas reflecting the “importance” or priority of the ad. The use of theskip-level value is described in detail in FIG. 3.

FIG. 3 is a flow diagram of a process for automatically skipping ads ina media file read from memory in a media unit in accordance with oneembodiment. At step 302 a media playback program on the media playerreads the value of what is referred to in the various embodiments as anauto-skip right value from the user license. As noted, in oneembodiment, the user license has a value that indicates a level of“ad-skipping privilege” a user is entitled to, based on subscriptionlevel (i.e., subscription price paid) or based on channel or program.This auto-skip right value enables a potential extension in the businessmodel for a service provider. The provider may give a user (consumer)the option to pay more if the user would like to avoid ads in the mediafiles that the user receives from the service provider. For example, ifa user pays more for a higher level subscription, the auto-skip rightmay be higher and the user will see fewer ads (or none) than a user whohas a lower subscription level. This auto-skip right value may be storedin any suitable location in the user license. The auto-skip right mayalso determine if the user can fast forward through the ads and haveother data on the user's ad rights. These auto-skip levels also enablethe service provider to increase its price discrimination toadvertisers; different ads will be either skipped or forcibly viewed byusers in various subscription levels.

At step 304 the media playback program opens the media filecorresponding to the selection made by the user and decrypts the header.The media file may be read from the unit's hard disk or other massstorage component. Upon opening the media file, the program reads the admanagement data which may be in the form of a table or other datastructure stored in the header of the media file as described in FIG.2B; the ad management data may also be stored outside of the media file.In one embodiment, there may be a de-multiplexing component forseparating the various streams in the media file. This is describedbelow. The total number of ads in the media may be determined by readingthe ad number of the last entry in the table, if the ads are numberedsequentially starting from 1. The media file header may also have afield that stores the total number of ads in the file or the program maycount the total number of ads using any efficient method depending onthe format of the ad management data. After the total number of ads inthe media file has been determined, a variable, current-ad, is set to 1.In other embodiments, step 304 may be performed before 302.

At step 306 the location of the first ad is determined by examining thestart location of the first record in the ad management table. At thistime the program also begins playback of the media file. The programuses the start location of the first ad to begin playback and continuesuntil the beginning of the first ad. At step 307 the playback programhas reached the start location of the first ad and pauses playback toread the skip-level value of the first ad. (The pause is only within theplayback control software and is not discernable to the user.) Inanother embodiment, the program may have read this value when it wasreading the start location of the ad. In one embodiment, as noted above,the skip-level value is stored in a skip-level value field in the admanagement data table.

At step 308 the skip-level value is compared with the auto-skip levelvalue that was read from the user license at step 302. For thiscomparison to be logical or meaningful, the units for the auto-skip andskip-level values are the same or are otherwise comparable. In asimplified example, they may both be an integer number between 1 and 10.If the skip-level value of the ad is less than the auto-skip value forthe user, control goes to step 310 where the ad is skipped. If theskip-level value is not less than the auto-skip value, the ad is playedand additional parameters regarding playback of the ad may be examinedat step 312. Thus, at step 308, the program determines whether the userhas a sufficiently high auto-skip right value to instruct the playbackprogram to automatically skip the ad. The ad has a skip-level value,which may be described as measuring the priority or importance of thead. In short, the more an advertiser pays for placing the ad, the higherthe skip-level value will be. The advertiser may opt to pay the maximumamount which may give the ad a skip-level value of 10. In this case, thead may never be skipped because the highest auto-skip value a user canhave is 10 (which is not less than 10) and control will go to step 312where the ad is played (possibly subject to other parameters). If theadvertiser pays an intermediate rate, the ad may be assigned askip-level of 5. If the user has an auto-skip value less than 5, the adwill be skipped, otherwise it will be played. At step 312 the mediaplayback program reads ad control information and renders the ad untilthe next ad or the media file content begins. Control then goes to step314 where current-ad is incremented by one.

If control goes to step 310, where the ad is skipped, the program readsthe end location of the ad or the length of the ad to determine where(e.g., specific Access Unit) the program should skip to. Once the ad isskipped, the program increments the current-ad counter by 1 at step 314.At step 316 the playback program checks whether the counter is less thanor equal to the total number of ads, N, in the media file (determined atstep 304). If it is, then at step 318 the program reads the startlocation of the next ad and its skip-level value. At step 320 theprogram plays the media file until the location of the next ad. If thestart location of the current ad is after some content, then the programresumes playback of the content starting from the end of the lastcurrent ad. If the next ad is immediately after the previous ad, themedia file is not rendered. Control then returns to step 308 where theskip-level value of the current ad is compared to the auto-skip level ofthe user (this value may be temporarily stored by the program so it doesnot have to repeatedly access the user license). Returning to step 316,if it is determined that the value of current-ad is not less than orequal to (i.e., greater than) the total number of ads (indicating thatthe previous ad that was processed was the last ad), then control goesto step 322 where the media file is played until the end of the file andthe process is complete. Thus, using various embodiments of thisprocess, a service provider can enable differentiated services to usersbased on a subscription level or other factors.

As noted above, in one embodiment the media file is transmitted to theuser's PVR, computer, or other media playback unit and stored on anappropriate storage device. The media file may be transmitted by aservice provider such as a cable TV company or other content provider.The media file that is transmitted to the media unit contains admanagement information, in addition to the conventional audio streamsand video streams. One format of such a stream is an MPEG2-TS formatstream. In the described embodiment, this file format may be extended tostore ad management information. FIG. 4 is a block diagram showing thevarious streams and how ad management information is multiplexed tocreate a single MPEG2-TS format stream at a service provider location inaccordance with one embodiment. MPEG2-TS provides a system levelmultiplexing scheme for video and audio streams along with othersystem-level information.

A scheme or mechanism for inserting ad management information into thebroadcast stream is described in FIG. 4. In one embodiment, a separatedata stream is added to the MPEG2-TS stream to carry ad managementinformation. One or more video streams 402 are input to an MPEG-2Elementary Encoder 404 and one or more audio streams 406 are input to asecond MPEG-2 Elementary Encoder 408. Streams 402 and 406 are typicallycomprised of multiple streams. An ad management information stream 410contains the ad information described above in FIG. 2B. In oneembodiment it is a single stream and is not input to an encoder. Theoutput streams from encoders 404 and 408 and ad information stream 410are each input to packetizers 412, 414, and 416, respectively. Theoutput from each packetizer (Packetized Elementary Stream or PES) areinput to a Systems Layer Mux unit 418 where the PES streams are combinedto create a final MPEG2-TS stream that 420 is transmitted over a cablenetwork (or other suitable network) and received by a user's PVR,computer, or other media playback unit (not shown). The structure andprocess described in FIG. 4 is specific to the MPEG2-TS standard. Inother embodiments, different components and processes may be used tomultiplex the ad management information depending on the specificstandard. In this manner, a general framework (data structure) todeliver ad management information that can accommodate a wide range ofbusiness models and methods is provided. This structure can be a singleitem that contains information about all ads in the media file (i.e.,single program), or may be used to structure individual packets in astream of such packets. The former is more appropriate for pre-recordedcontent and the latter may be more suitable for live broadcasts. Inother embodiments, ad information may be in an optional field in the PESor extension field in the TS packet.

Ad management information may be stored in a data structure shown inTable 1.

TABLE 1 Length (bits) Type eAd_Control ( ) { nbrOfZones 8 uimsbf for (i= 0; I < nbrOfZones; i++ { StartAUId 8 uimsbf EndAUId 8 uimsbf FP 1bslbf } }

The variables can be described as follows:

nbrOfZones: number of spans of ad content each span bounded by StartAUIdand EndAUId;

StartAUId: index (the specific Access Unit) where the span of ad contentstarts;

EndAUId: index where the span of ad content ends;

FP (Forced Play): information regarding user control of ad; if FP bit is1 then the user cannot manually skip or fast-forward through thespecific ad content span; and

Skip-level: a value assigned to a specific ad in the ad content span ora value assigned to all the ads within the ad content span.

Another data item that may be included in the ad management informationstream is a coupon provisioning (CP) bit which indicates the possibilityof granting coupons for watching content. In general, Access Control bitvalues may be applicable to a specific AU or to a range of AUs in agiven media file or stream. As noted, these control bits determinewhether a certain ad in a given media file can be skipped.

FIG. 5 is a block diagram showing how an ad management informationstream can be de-multiplexed from an MPEG-2 TS stream at a mediaplayback unit in accordance with one embodiment. A media playback unitreceives MPEG-2 TS stream 420 representing a media file (e.g., a TV showor movie) that contains ads which is recorded onto a PVR. The processbegins with a user selecting a recorded program. As is currently done,MPEG2-TS stream de-multiplexer component 110 in FIG. 1 filters a programallocation table (PAT) 502 to obtain the program (i.e., content)selected by the user. PAT 502 already resides on media unit. It ismanifested to the user as a listing of programs from which the user canselect a program. A sample PAT 502 contains a column 504 for programs(pgm1, pgm2, etc.) and a column 506 for a corresponding programidentifier (PID). Each program is comprised of multiple streams. The PIDof the selected program points to a program map table (PMT) 508 whichmay have two columns: type and a program identifier (PID). There is onePMT 508 for each program listed in PAT 502. PMT 504 lists each of theindividual streams comprising program 2. An ad management stream 512corresponding to program 2 is filtered from PMT 504. A PID in PMT 504maps to ad management stream 512 which is comprised of data in the tabledescribed in FIG. 2B. Because a conventional MPEG-2 TS stream does notcontain ad management information (i.e., ad management stream 512), thestep of filtering for this information from PMT 504 was not previouslyperformed.

Returning now to processes for automatically skipping ads, recall thatthe flow diagram shown in FIG. 3 describes a process in which each adhas a skip-level value stored in the ad management information for themedia file. This skip-level value is compared with an auto-skip valueassigned to a user, for example, based on a subscription level. Inanother embodiment, determining whether to skip an ad is based only onan auto-skip right of the user. This embodiment may be described as abinary case or subset of the more general case described in FIG. 3. FIG.6 is a flow diagram of a process of skipping an ad in a media file inaccordance with this embodiment. It is helpful to note that several ofthe steps are similar to those in FIG. 3.

At step 602 the media playback program on the media player reads theauto-skip right value from the user license. As noted, in oneembodiment, the user license stores an auto-skip right value thatconveys the level of the “ad-skipping privilege” a user is entitled to,based on subscription level or other factors, such as channel orprogram. This auto-skip right value may be used to extend the businessmodel for a service provider. The provider may give a user (consumer)the option to pay more if the user would like to avoid ads in the mediafiles the user receives from the service provider. For example, if auser pays more for a higher level subscription, the auto-skip right maybe higher and the user will see fewer ads than a user who has a lowersubscription level or see no ads. The auto-skip right may also determineif the user can fast forward through the ads and perform other accesscontrol operations.

At step 604 the media playback program opens the media filecorresponding to the selection made by the user and decrypts the header.The media file may be read from the unit's hard disk or other massstorage component. Upon opening the media file the program reads the admanagement data which may be in the form of a table or other datastructure stored in the header of the media file, as described in FIG.2B. The ad management data may also be stored outside of the media file.In one embodiment, there may be a de-multiplexing component forseparating the various streams in the media file. The total number ofads in the media may be determined by reading the ad number of the lastentry in the table, if the ads are numbered sequentially startingfrom 1. The media file header may also have a field that stores thetotal number of ads in the file or the program may count the totalnumber of ads using any efficient method which may be depend on theformat of the ad management data. After the total number of ads in themedia file has been determined, a variable, current-ad, is set to 1. Inother embodiments, step 604 may be performed before 602.

At step 606 the location of the first ad is determined by examining thead data. Specifically, the start location value of the first record inthe table provides this data. At this time the program also beginsplayback of the media file. The program uses the start location of thefirst ad to begin playback and continues until the beginning of thefirst ad.

At step 608 the media playback module determines whether the value ofthe auto-skip value is TRUE or FALSE (e.g., 1 or 0). If it is TRUE,control goes to step 610 where the ad is skipped automatically by theplayback module. The program may read the end location of the ad or thelength of the ad to determine where the program should skip to.

Once the ad is skipped, the program increments the current-ad counter by1 at step 612. If the auto-skip value is FALSE, control goes to step 614where the ad is played and additional parameters regarding playback ofthe ad may be examined. Thus, at step 608, the program determineswhether the user has the right to have ads automatically skipped by theplayback program. At step 614 the media playback program reads adcontrol information and renders the ad. Control then goes to step 612where the counter is incremented by 1.

At step 616 the program checks whether the counter is less than or equalto the total number of ads in the media file determined at step 604. Ifit is, control goes to step 618 where the program reads the startlocation of the next ad and obtains skip-level value. At step 620 theprogram plays the media file until the location of the next ad. If thestart location of the current ad is after some content (e.g., a movie),then the program resumes playback of the content starting from the endof the last current ad. If at step 616 it is determined that the valueof current-ad is greater than the total number of ads, N, then controlgoes to step 622 where the media file is rendered until the end of thefile and the process is complete.

In this embodiment, the ad management information does not contain askip-level value for each ad since this value is not needed. If a userhas an auto-skip level value that is TRUE, then all ads areautomatically skipped. There is no prioritization of ads, that is, eachad has the same level of “importance.” In another embodiment this valuemay be part of the ad management information but not used in thisspecific implementation. If the service provider decides to extendautomatic ad skipping service, it may use this value and implement theprocess described in FIG. 3 or a similar process. In other embodiments,there may be some priority of ads that can be used in conjunction with auser's auto-skip value. The auto-skip value and the skip-level value mayboth be binary values and binary logic operations may be used todetermine whether to automatically skip an ad.

Throughout the description of the various embodiments, reference hasbeen made to a user license or DRM license. A brief description of userlicense 106 was provided in reference to FIG. 1. FIG. 7 is a blockdiagram showing greater detail of user license 106 in accordance withone embodiment of the present invention. User license 106 may be in theform of an XML file or other suitable format. User license 106 may havevarious types of data, some of which is required in all or most licensesand other data which is optional and may be included depending on theneeds of content providers, service providers, and users, the nature ofthe business model, the type of content, the complexity of theconstraints and rights involved, among other factors. There are alsodifferent types of DRMs, such as OMA DRM and Marlin DRM, among others;each has a different license format. Those of ordinary skill in thefield of DRM would be familiar with these licenses and the types of datacontained in or conveyed by them, as described below.

The primary data included in nearly all licenses is the constraintsplaced on an entity (explained below) with respect to viewing andgenerally handling the content associated with the license. Theseconstraints, which may also be seen as rights the entity has withrespect to the content, are shown as data item 702 in FIG. 7. Examplesof these constraints (rights) vary widely and may include number oftimes the entity can view the content, the length of elapsed time thecontent can be played, or the absolute time until which it can beplayed. In one embodiment of the present invention, constraints (rights)702 include auto-skip right 704. This right provides one or more valuesconveying the right the entity has with respect to automatic skipping ofads in the media file (content) associated with the license. In oneembodiment, it may be a 1 or 0. In another embodiment, it may be a valuewithin a specific range. In either embodiment, the value conveys theentity's automatic ad skipping rights, as described in FIGS. 3 and 6. Inother embodiments, auto-skip right 704 may be stored at another suitablelocation in license 106 rather than with constraints (rights) 702.

Another data item that is typically included in license 106 is at leastone type of encryption key, shown as keys 706. For example, it may be adecryption key 708 for decrypted the media file (content) that istypically encrypted. License 106 may also contain a content encryptionkey (CEK) 710 which may be used to encrypt A decryption key. There mayalso be a domain key 712 which is similar to keys 708 or 710 but isshared among several devices in a domain (distinguished set of devicesor users). As someone of ordinary skill in the art knows, there areother types of keys that may be included, each used for a specificpurpose, not relevant to the present invention.

Another category of data items that may be included in license 106 isidentifiers 714. These identifiers define or may be associated with theterm “entity” used in the preceding paragraphs. An entity may be anindividual user or family of users, or a device or a domain, such as aset of devices. There may also be one or more identifiers for thecontent associated with the license. In the specific embodimentsdescribed above, “entity” is typically an individual user or ahousehold; thus, a DRM license in the embodiments above may likely havea user ID or service account number corresponding to the specific useror household. This user has certain rights with respect to automaticskipping of ads. These rights may also be tied to a particular device(PC, DVR, handset, etc.) such that when the content is played on thatparticular device, ads are automatically skipped regardless of who theuser is. In other embodiments, both may be used (a particular user on aspecific device) or a family of user (e.g., members of the samehousehold) on a domain of devices (e.g., all the media playback devicesregistered to that household). As is evident, there are various otherarrangements where identifiers 714 may be used depending on the contextand needs of the users.

Besides the technology barriers, there may be legal and businessroadblocks to automatic ad skipping, such as litigation from contentproviders and broadcasters. However, embodiments of the presentinvention allows for legal auto-skipping by enabling the automaticad-skipping feature only for users who have made some type of payment orconsideration and only in programs with ads where the content providersor producers have agreed to such arrangements and business models.Payments from the user may compensate, at least in part, for the lowerrevenue from advertisers.

As noted above, the media playback unit may have various implementationsin addition to the PVR or DVR, such as a computer, including a desktop,laptop, netbook, mini laptop computers or tablet-style computers, andvarious handset or mobile computing devices that are suitable forviewing media content. FIGS. 8A and 8B illustrate a computing system 800suitable for implementing specific embodiments of the present invention.FIG. 8A shows one possible physical implementation of the computingsystem. In one embodiment, computing system 800 includes a monitor 802,a display 804, a housing 806, a disk drive 808, a keyboard 810 and amouse 812. Disk 814 is a computer-readable medium used to transfer datato and from computer system 800. Other computer-readable media mayinclude USB memory devices and various types of memory chips, sticks,and cards.

FIG. 8B is an example of a block diagram for computing system 800.Attached to system bus 820 are a wide variety of subsystems.Processor(s) 822 (also referred to as central processing units, or CPUs)are coupled to storage devices including memory 824. Memory 824 includesrandom access memory (RAM) and read-only memory (ROM). As is well knownin the art, ROM acts to transfer data and instructions uni-directionallyto the CPU and RAM is used typically to transfer data and instructionsin a bi-directional manner. Both of these types of memories may includeany suitable of the computer-readable media described below. A fixeddisk 826 is also coupled bi-directionally to CPU 822; it providesadditional data storage capacity and may also include any of thecomputer-readable media described below. Fixed disk 826 may be used tostore programs, data and the like and is typically a secondary storagemedium (such as a hard disk) that is slower than primary storage. Itwill be appreciated that the information retained within fixed disk 826,may, in appropriate cases, be incorporated in standard fashion asvirtual memory in memory 824. Removable disk 814 may take the form ofany of the computer-readable media described below.

CPU 822 is also coupled to a variety of input/output devices such asdisplay 804, keyboard 810, mouse 812 and speakers 830. In general, aninput/output device may be any of: video displays, track balls, mice,keyboards, microphones, touch-sensitive displays, transducer cardreaders, magnetic or paper tape readers, tablets, styluses, voice orhandwriting recognizers, biometrics readers, or other computers. CPU 822optionally may be coupled to another computer or telecommunicationsnetwork using network interface 840. With such a network interface, itis contemplated that the CPU might receive information from the network,or might output information to the network in the course of performingthe above-described method steps. Furthermore, method embodiments of thepresent invention may execute solely upon CPU 822 or may execute over anetwork such as the Internet in conjunction with a remote CPU thatshares a portion of the processing.

In addition, embodiments of the present invention further relate tocomputer storage products with a computer-readable medium that havecomputer code thereon for performing various computer-implementedoperations. The media and computer code may be those specially designedand constructed for the purposes of the present invention, or they maybe of the kind well known and available to those having skill in thecomputer software arts. Examples of computer-readable media include, butare not limited to: magnetic media such as hard disks, floppy disks, andmagnetic tape; optical media such as CD-ROMs and holographic devices;magneto-optical media such as floptical disks; and hardware devices thatare specially configured to store and execute program code, such asapplication-specific integrated circuits (ASICs), programmable logicdevices (PLDs) and ROM and RAM devices. Examples of computer codeinclude machine code, such as produced by a compiler, and filescontaining higher-level code that are executed by a computer using aninterpreter.

Although illustrative embodiments and applications of this invention areshown and described herein, many variations and modifications arepossible which remain within the concept, scope, and spirit of theinvention, and these variations would become clear to those of ordinaryskill in the art after perusal of this application. Accordingly, theembodiments described are illustrative and not restrictive, and theinvention is not to be limited to the details given herein, but may bemodified within the scope and equivalents of the appended claims.

What is claimed is:
 1. A method of playing a media file having an ad,the method comprising: retrieving a user level value from a userlicense; examining the user level value, wherein the user level valuehelps indicate a right of a user to not play the ad; extracting admanagement data from the media file; determining a start location of thead by examining the ad management data; retrieving a skip-level value ofthe ad by examining the ad management data; comparing the skip-levelvalue with the user level value; based on the comparison, determiningwhether the ad should be skipped; and based on the determination ofwhether the ad should be skipped, playing the media file and skippingthe ad without involving user intervention.
 2. The method as recited inclaim 1, wherein the user level value has a plurality of possiblevalues, including a first value that indicates not playing the ad and asecond value that indicates playing the ad and wherein the methodfurther comprises determining whether the user level value is equal tothe first value or to the second value.
 3. The method as recited inclaim 1 further comprising: not playing the ad when the skip-level valueis less than the user level value.
 4. The method as recited in claim 1wherein the ad management data includes the start location of the ad, anad control indicator, and the skip-level value.
 5. The method as recitedin claim 1 wherein the skip-level value is stored with the ad.
 6. Themethod as recited in claim 1 further comprising: filtering a programfrom a program allocation table; and filtering an ad management streamfrom the program.
 7. The method as recited in claim 6 wherein the admanagement stream includes the start location of the ad and an adcontrol indicator.
 8. The A method as recited in claim 6 wherein themedia file is in MPEG-2 TS format.
 9. The method as recited in claim 1further comprising: reading ad control information in the ad managementdata; and playing the ad according to the ad control information. 10.The method as recited in claim 1 wherein the user level value isassociated with a user on a program content basis.
 11. The method asrecited in claim 1 wherein the user level value is associated with auser on a user subscription basis and indicates a subscription level ofthe user related to a right to automatically not play ads.
 12. Themethod as recited in claim 1 further comprising: determining a total adnumber from the ad management data table.
 13. The method as recited inclaim 1 wherein there are a plurality of ads in the media file that areseparated by show content and wherein different locations of all the adsare indicated by the ad management data that is stored in the mediafile.
 14. The method as recited in claim 13 wherein each ad isassociated with a different skip level indicating that users associatedwith different user levels would skip different numbers of the ads. 15.The method as recited in claim 1 wherein said ad is referred to hereinas the first ad, the media file including a plurality of ads includingthe first ad and a second ad, the method further comprising: extractingstart points of the first and second ads from the ad management data;determining a total number of ads in the media file by examining the admanagement data; playing the media file until the start point of thefirst ad is reached; reading a skip level of the first ad; comparing theskip level of the first ad with the user level; based on the comparingof the skip level of the first ad with the user level, determiningwhether to skip the first ad; after the comparing of the skip level ofthe first ad with the user level, playing the media file until a startpoint of the second ad is reached; reading a skip level of the secondad; comparing the skip level of the second ad with the user level; andbased on the comparing of the skip level of the second ad with the userlevel, determining whether to skip the first ad.
 16. The method asrecited in claim 1 wherein the ad management data includes couponprovisioning data that indicates a possibility of granting coupons forwatching content.
 17. An apparatus for playing a media file, theapparatus comprising: a processor; a network interface component; a datastorage unit storing the media file; ad management data containing askip-level value of the ad; a user license containing a user levelvalue; an ad evaluation module arranged to compare the skip-level valueof the ad with the user level value; and a media file playback module,wherein the playback module and the ad evaluation module execute on theprocessor, such that during playback of the media file, the ad isautomatically not played depending on the comparison between the userlevel value and the skip level value.
 18. The apparatus as recited inclaim 17 wherein the data storage unit stores a program allocation tableand a program map table.
 19. The apparatus as recited in claim 17wherein the ad management data includes a total number of ads in themedia file, a plurality of start locations corresponding to a pluralityof ads, and a plurality of end locations corresponding to the pluralityof ads.
 20. The apparatus as recited in claim 17 wherein the datastorage unit stores an ad management data extraction module forobtaining the ad management data from the media content file.
 21. Theapparatus as recited in claim 17 wherein the ad evaluation moduledetermines when not to play an ad using the user level value.
 22. Theapparatus as recited in claim 17 wherein the user level value isassociated with a user right to automatically not have an ad playedduring media file playback.
 23. The apparatus as recited in claim 17wherein the media file and the ad management data are received by theapparatus using the network interface component.
 24. The apparatus asrecited in claim 17 wherein the apparatus is arranged to: extract the admanagement data from the media file; determine a start location of thead by examining the ad management data; and retrieve a skip level valueof the ad by examining the ad management data.
 25. The apparatus asrecited in claim 17 wherein the ad management data includes couponprovisioning data that indicates a possibility of granting coupons forwatching content.
 26. A method of automatically not playing ad contentduring playback of primary content in a media file, the methodcomprising: retrieving a user level right from a digital rightsmanagement (DRM) license; extracting ad management data from the mediafile; determining a start point of the ad content by examining the admanagement data; playing the primary content until the start point ofthe ad content; retrieving a skip-level value of the ad content byexamining the ad management data; comparing the skip-level value withthe user level; determining whether to play the ad content based on saidcomparing; and if it is determined that the ad content should not beplayed, playing the media file and skipping the ad content without useraction.
 27. The method as recited in claim 26 wherein the user level inthe DRM license determines whether the ad content is played duringplayback of the primary content for a specific user or a specific devicecapable of media file playback.
 28. The method as recited in claim 26wherein determining whether to play the ad content further comprises:playing the ad content when the skip-level value is equal to or greaterthan the user level value.
 29. The method as recited in claim 26 whereindetermining whether to play the ad content further comprises: notplaying the ad content when the skip-level value is equal to or greaterthan the user level value.
 30. An apparatus for playing a media filehaving an ad, the apparatus comprising: means for retrieving a userlevel value from a user license; means for examining the user levelvalue; means for extracting ad management data from the media file;means for determining a start location of the ad by examining the admanagement data; means for retrieving a skip level value of the ad byexamining the ad management data; means for comparing the skip-levelvalue with the user level value; means skipping the ad and playing themedia file depending on the comparison wherein the skipping of the ad isperformed without user intervention.
 31. The apparatus as recited inclaim 30 wherein the user level value has a plurality of possiblevalues, including a first value that indicates not playing the ad and asecond value that indicates playing the ad and wherein the methodfurther comprises: means for determining whether the user level value isequal to the first value or to the second value.
 32. The apparatus asrecited in claim 30 wherein the ad is not played when the skip-levelvalue is less than the user level value.
 33. The apparatus as recited inclaim 30 wherein the ad is played when the skip-level value is equal toor greater than the user level value.
 34. A non-transitorycomputer-readable medium storing computer instructions for playing amedia file having an ad, the computer-readable medium comprising:computer code for retrieving a user level value from a user license;computer code for examining the user level value; computer code forextracting ad management data from the media file; computer code fordetermining a start location of the ad by examining the ad managementdata; computer code for retrieving a skip level value of the ad byexamining the ad management data; computer code for comparing the skiplevel value with the user level value; computer code for determining,based on the comparison, whether the ad should be skipped; and computercode for playing the media file and skipping the ad without involvinguser intervention based on the determination of whether the ad should beskipped.
 35. The non-transitory computer-readable medium as recited inclaim 34 wherein the user level value has a plurality of possiblevalues, including a first value that indicates not playing the ad and asecond value that indicates playing the ad and wherein thecomputer-readable medium further comprises computer code for determiningwhether the user level value is equal to the first value or to thesecond value.
 36. A non-transitory computer-readable medium as recitedin claim 34 further comprising: computer code for determining that thead should be played when the skip-level value is less than the userlevel value.
 37. The non-transitory computer-readable medium as recitedin claim 34 further comprising: computer code for determining that thead is played when the skip-level value is equal to or greater than theuser level value.